package moo.stargalaxy_bukkit;

import moo.stargalaxy_bukkit.api.CmdBukkit;
import moo.stargalaxy_bukkit.api.GalaxyBukkitAPI;
import moo.stargalaxy_bukkit.config.Config;
import moo.stargalaxy_bukkit.utils.Lag;
import moo.stargalaxy_bukkit.listener.GalaxyListener;
import moo.stargalaxy_bukkit.network.BukkitNetWork;
import moo.stargalaxy_bukkit.utils.PaPi;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.scheduler.BukkitRunnable;

public final class StarGalaxy_Bukkit extends JavaPlugin {

    private static Plugin plugin;

    @Override
    public void onEnable() {
        // Plugin startup logic
        // checkIfBungee();
        plugin = this;
        // 连接插件 PaPi
        if(Bukkit.getPluginManager().isPluginEnabled("PlaceholderAPI")){
            new PaPi().register();
        } else {
            getLogger().info("================ 缺少前置: PlaceholderAPI ================");
        }

        //this.getServer().getMessenger().registerOutgoingPluginChannel(this, "BungeeCord");
        //this.getServer().getMessenger().registerIncomingPluginChannel(this, "BungeeCord", new BukkitNetWork());

        this.getServer().getMessenger().registerOutgoingPluginChannel(this, "stargalaxy:message");
        getServer().getMessenger().registerIncomingPluginChannel( this, "stargalaxy:message", new BukkitNetWork()); // we register the incoming channel
        getServer().getPluginManager().registerEvents(new GalaxyListener(),this);
        getServer().getPluginCommand("sgs").setExecutor(new CmdBukkit());

        Config.loadYaml(); // 初始化配置文件
        GalaxyBukkitAPI.initGalaxy(); // 初始化日志和控制台连接
        GalaxyBukkitAPI.gitServerInfo(); // 初始化其他综合性配置
        getServer().getScheduler().scheduleSyncRepeatingTask(this, new Lag(), 100L, 1L);
        runGetServerData(); // 初始化变量缓存数据
    }

    @Override
    public void onDisable() {
        // Plugin shutdown logic
    }

    public static Plugin getPlugin() {
        return plugin;
    }

    public static void setPlugin(Plugin plugin) {
        StarGalaxy_Bukkit.plugin = plugin;
    }

    // 判断是否开启蹦极(spigot.yml > bungeecord)模式
    // we check like that if the specified server is BungeeCord.
    //private void checkIfBungee() {
    //    if ( !getServer().spigot().getConfig().getConfigurationSection("settings").getBoolean( "bungeecord" ) ) {
    //        getLogger().severe( "不是BC模式,插件关闭");
    //        getServer().getPluginManager().disablePlugin( this );
    //    }
    //}

    // 设置变量缓存设置子程序
    public static void runGetServerData(){
        new BukkitRunnable() {
            @Override
            public void run() {
                if(Config.getConfiguration().getBoolean("Server_Set.PAPI_Enable")) Config.loadData();
            }
        }.runTaskTimer(plugin, 0 , 20L * Config.getConfiguration().getInt("Server_Set.PAPI_Cache_Time"));

    }
}
